package org.lestr.secuel.m3ds.maths;

public interface IVecteur3d extends IPoint3d<IPoint3d.IEcouteur<IVecteur3d>, IVecteur3d> {


    /** Retourne le norme du vecteur */
    public double obtenirNorme();


    /** Retourne le norme au carré du vecteur */
    public double obtenirNormeAuCarré();


    /** Défini le vecteur comme le produit cartésien des deux vecteurs passés en paramètre. */
    public void produitCartésien(IVecteur3d u,
                                 IVecteur3d v);


    /** Normalise le vecteur */
    public void normaliser();


    /** Retourne le produit vectoriel effectué entre le vecteur et un autre. */
    public double produitVectoriel(IVecteur3d u);


    /** Retourne l'angle en degré effectué entre le vecteur et celui passé en paramètre. */
    public double obtenirAngle(IVecteur3d u);


    /** Multiplie le vecteur par une constante */
    public void redimensionner(double d);


    /** Additionne au vecteur un autre */
    public void additionner(IVecteur3d u);


    /** SOustrait au vecteur un autre */
    public void soustraire(IVecteur3d u);


    public IVecteur3d obtenirCopie();


}// FIN Interface IVecteur3d
